#ifndef ASIAN_PRODUCT_H
#define ASIAN_PRODUCT_H

#include "PayOffBridge.h"
#include "SolvableExoticMC.h"

class AsianProduct :  public SolvableExoticMC
{
public:
	AsianProduct(const PayOffBridge& payoff,double expiry,
		const std::vector<double>& lookAtTimes);
	double getExpiry() const;

	virtual std::vector<double> getLookAtTimes() const;
	virtual std::vector<double> getCashFlowTimes() const;
	virtual int getMaxNumOfCashFlows() const;
	virtual std::vector<double> getCashFlows(const std::vector<double>& spots) const;	

public:
	virtual AsianProduct* clone() const;
	virtual ~AsianProduct(){}
private:
	PayOffBridge m_payoff;
	double m_expiry;
	std::vector<double> m_lookAtTimes;
};

#endif